package springcloud.test.product.facade;

import com.netflix.hystrix.contrib.javanica.cache.annotation.CacheKey;
import rx.Observable;
import springcloud.test.common.ResultMessage;
import springcloud.test.common.pojo.UserInfo;

import java.util.List;
import java.util.concurrent.Future;

public interface UserFacade {
    ResultMessage timeout();

    ResultMessage timeout2();

    Future<ResultMessage> asyncTimeout();

    ResultMessage exp(String msg);

    List<ResultMessage> exp2(String[] params);

    Observable<ResultMessage> asyncExp(String[] params);

    String dealFile(String filePath);

    UserInfo testUserInfo(Long id);

    UserInfo updateUserInfo(UserInfo user);

    UserInfo getUserInfo(@CacheKey Long id);

    UserInfo getUser(Long id);

    List<UserInfo> findUsers(Long[] ids);

    Future<UserInfo> getUser2(Long id);

    List<UserInfo> findUsers2(List<Long> ids);
}
